package com.denlaku.longan.dao;

import com.denlaku.longan.anno.VarOp;
import com.denlaku.longan.qo.UserQuery;
import com.denlaku.longan.vo.User;

import java.util.List;

/**
 * 用户DAO
 *
 * @author tianx
 */
public interface UserDao {
	/**
	 * 根据参数查询用户
	 *
	 * @param userQuery 查询参数
	 * @return 用户
	 */
	User get(UserQuery userQuery);

	/**
	 * 根据参数查询用户密码
	 *
	 * @param userQuery 查询参数
	 * @return 用户密码
	 */
	String getPassword(UserQuery userQuery);

	/**
	 * 根据参数查询用户
	 *
	 * @param userQuery 参数查询
	 * @return 用户
	 */
	List<User> list(UserQuery userQuery);

	List<User> search(UserQuery userQuery);

	/**
	 * 根据参数查询用户基础信息
	 *
	 * @param userQuery 参数查询
	 * @return 用户基础信息
	 */
	List<User> listBaseInfo(UserQuery userQuery);

	/**
	 * 新增用户
	 *
	 * @param user 用户
	 */
	@VarOp
	void add(User user);

	/**
	 * 更新用户
	 *
	 * @param user 用户
	 */
	@VarOp
	void update(User user);

	/**
	 * 删除用户
	 *
	 * @param id 用户ID
	 */
	void delete(Long id);

	/**
	 * 激活用户
	 *
	 * @param user 用户
	 */
	@VarOp
	void enabled(User user);

	/**
	 * 禁用用户
	 *
	 * @param user 用户
	 */
	@VarOp
	void disabled(User user);

}
